package org.bibpessoal.mbeans;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import org.bibpessoal.entidades.Aluguel;
import org.bibpessoal.entidades.Livro;
import org.bibpessoal.entidades.Usuario;
import org.bibpessoal.fachadas.FachadaBibPessoal;

@ManagedBean
public class PrincipalMB {

	private List<Usuario> usuarios;
	
	private List<Livro> livros;
	private List<Aluguel> alugueis;
	
	private Usuario usuario;
	
	private FachadaBibPessoal fachada;
	private UsuarioMB usuarioMB;
	
	private String data;
	private Integer totalDeLivros;

	public PrincipalMB(){
		super();
		this.usuario = new Usuario();
		SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy"); 
		Date data = new Date();
		this.data = formatador.format(data);
	}

	@PostConstruct
	public void init() {
		fachada = FachadaBibPessoal.getInstancia();
		this.usuarios = fachada.listarUsuarios();
		this.usuarioMB = (UsuarioMB) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("usuarioMB");
		this.livros = fachada.listarLivros(usuarioMB.getAux().getId());
		
		this.usuario = fachada.carregarUsuario(usuarioMB.getAux().getId());
		this.totalDeLivros = this.livros.size();
		
		if(this.usuarioMB.getUsuario().getId() == this.usuarioMB.getAux().getId())
			this.alugueis = fachada.listarLivrosSolicitadosEmprestados(usuarioMB.getAux().getId());
	}
	
	public void perfilUserLogado(){
		System.out.println("Entrou no metodo perfilUserLogado: ");
		System.out.println("Id usuario logado: "+usuarioMB.getUsuario().getId());
		System.out.println("Id do usuario auxiliar: "+usuarioMB.getAux().getId());
		usuarioMB.getAux().setId(usuarioMB.getUsuario().getId());
		System.out.println("Id usuario logado: "+usuarioMB.getUsuario().getId());
		System.out.println("Id do usuario auxiliar: "+usuarioMB.getAux().getId());
	}

	public void listarLivrosAmigo(Usuario usuario){
		
		usuarioMB.getAux().setId(usuario.getId());
		
	}
	
	public String paginaPrincipal(){
		return "index?faces-redirect=true";
	}

	public List<Usuario> getUsuarios() {
		return usuarios;
	}

	public void setUsuarios(List<Usuario> usuarios) {
		this.usuarios = usuarios;
	}

	public List<Livro> getLivros() {
		return livros;
	}

	public void setLivros(List<Livro> livros) {
		this.livros = livros;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public String getData() {
		return data;
	}

	public void setData(String data) {
		this.data = data;
	}

	public Integer getTotalDeLivros() {
		return totalDeLivros;
	}

	public void setTotalDeLivros(Integer totalDeLivros) {
		this.totalDeLivros = totalDeLivros;
	}

	public boolean isTemFotoPadrao(){
		if(this.usuario.getFoto() != null)
			return false;
		else
			return true;
	}

	public boolean isTemFotoCarregada(){
		if(this.usuario.getFoto() != null)
			return true;
		else
			return false;
	}

	public List<Aluguel> getAlugueis() {
		return alugueis;
	}

	public void setAlugueis(List<Aluguel> alugueis) {
		this.alugueis = alugueis;
	}
	
}
